# 利用map批量检测用户名是否符合规范=> username符 合规范，username不符合规范
# 只能包含数字、字母、下划线,不以数字开头，长度在6-18之间
import re
lst = ["sakjfhdwue2","24hjsdgu","_djs34","2324cdgdg"]
# username = input("请输入您的用户名：")
# lst.append(username)
ret = map(lambda x:re.findall("^[a-zA-Z_]\w{5,17}$",x),lst)
print(list(ret))
# # filter把合法的用户名显示出来
print(list(filter(lambda x:re.findall("^[a-zA-Z_]\w{5,17}$",x),lst)))

# # 匿名函数+reduce实现1*2*3..*n
n = int(input("请输入你要累乘的最大值："))
print(reduce(lambda x, y: x * y, range(1, n+1)))

# filter函数:找出[1-100]能被3整除的数
ret = filter(lambda x:x%3 == 0,range(1,101))
print(list(ret))

# map函数:求list[1-10]各项的平方
lst = [1,2,3,4,5,6,7,8,9,10]
print(list(map(lambda x:x*x,lst)))

# 将列表[1,4,5,9]转换成'1459'的字符串
from functools import reduce
lst = [1,4,5,9]
print(reduce(lambda x,y:str(x)+str(y),lst))

有以下列表: list1=[7,-8,5, 4,0,-2, -5]
●正数在前负数在后
●整数从小到大
●负数从大到小
lst = [7, -8, 5, 4, 0, -2, -5]
print(sorted(lst, key=lambda x: (x < 0, abs(x))))

# 这是一个字符串排序，排序规则:小写<大写<奇数<偶数
# ●S ='asdf234GDSdsf23' #排序:小写大写奇数-偶数
# ●原理:先比较元组的第一个值, FALSE
s = "asdf234GDSdsf23"
ret = sorted(s, key=lambda x: (48 < ord(x) < 57, 48 < ord(x) < 57 and int(x) % 2 == 0, 64 < ord(x) < 91, s))
print(ret)
